Additional Reading (Week 6)
One of the best introductions to monads is Dan Piponi's famous article, "You could have invented monads", available here:
http://blog.sigfpe.com/2006/08/you-could-have-invented-monads-and.html
Bartosz Milewski has also written a series of great blog posts that go well beyond what is covered in 3141, but are well worth a read.
For IO and effects, the two popular free online Haskell books have decent explanations: